# 创建蓝图：
import idna.idnadata
from flask import Blueprint,g,jsonify,current_app
from flask_restful import Api,Resource,reqparse,request


# 创建蓝图对象：
login = Blueprint('login',__name__,url_prefix='/login')


# 路由收集器：
api = Api(login)
from models.Inquiry_model import UserModel,db



# 写类：

import re
import random
import time
from utils.Redis_Code import RedisCode
from utils.Sdk_Code import SdkCode
from utils.Jwt_Token import JwtCode

# 发送验证码：
class CodeView(Resource):
    def get(self,mobile):

        if not re.finditer(r'^1[0-9][3-9]{9}$',mobile):
            return jsonify({
                'msg':'手机号不符号要求！',
                'code':400,
            })

        code = str(random.randint(100000,999999))

#         存入redis里;
        r = RedisCode().red
        code_time = current_app.config.get('REDIS_TIME')
        r.set('code_%s'% mobile,code,ex=code_time*60*60)

#         使用容联云发送验证码：
        sdk = SdkCode()
        current_app.pas.add_job(sdk.fa_code,args=(mobile,code))

        return jsonify({
            'msg':'发送验证码成功,请稍等',
            'code':200
        })


api.add_resource(CodeView,'/code/<mobile>')



# 登录注册：
class LoginView(Resource):
    def post(self):
        resp = reqparse.RequestParser()
        resp.add_argument('mobile')
        resp.add_argument('code')
        args = resp.parse_args()

        if not all([args['mobile'],args['code']]):
            return jsonify({
                'msg':'参数不对！',
                'code':400
            })

#         获取验证码：
        r = RedisCode().red
        chec = r.get('code_%s' % args['mobile'])

        if not chec:
            return jsonify({
                'msg':'验证码已过期！',
                'code':400
            })

        if chec.decode() != args['code']:
            return jsonify({
                'msg':'手机号或验证码有误！',
                'code':400
            })


#         当用户不存在时添加：
        use = UserModel.query.filter(UserModel.mobile == args['mobile']).first()

        if not use:
            ul = UserModel(
                mobile = args['mobile'],
                img = '',
                totle = 10000,
            )

            db.session.add(ul)
            db.session.commit()

            pal = {
                'id':ul.id,
                'mobile':ul.mobile,
                'exp':int(time.time()) +2*60*60
            }

            token = JwtCode().ja_jwt(pal)

            return jsonify({
                'msg':'注册并登录成功',
                'code':200,
                'token':token
            })
        use = UserModel.query.filter(UserModel.mobile == args['mobile']).first()

        pal = {
            'id': use.id,
            'mobile': use.mobile,
            'exp': int(time.time()) + 2 * 60 * 60
        }

        token = JwtCode().ja_jwt(pal)

        return jsonify({
            'msg': '登录成功',
            'code': 200,
            'token': token
        })



api.add_resource(LoginView,'/login')





















